return data->id;
}
+static gboolean
+flush_idle (gpointer data)
+{
+ GdkDisplay *display = data;
+ GdkBroadwayDisplay *broadway_display = GDK_BROADWAY_DISPLAY (display);
+
+ broadway_display->idle_flush_id = 0;
+ gdk_display_flush (display);
+
+ return FALSE;
+}
+
+void
+gdk_broadway_display_flush_in_idle (GdkDisplay *display)
+{
+ GdkBroadwayDisplay *broadway_display = GDK_BROADWAY_DISPLAY (display);
+
+ if (broadway_display->idle_flush_id == 0)
+ {
+ broadway_display->idle_flush_id = g_idle_add (flush_idle, g_object_ref (display));
+ g_source_set_name_by_id (broadway_display->idle_flush_id, "[gtk] flush_idle");
+ }
+}
+
+
static void
gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
{
GdkMonitor *monitor;
GHashTable *texture_cache;
+
+ guint idle_flush_id;
};
struct _GdkBroadwayDisplayClass
guint32 gdk_broadway_display_ensure_texture (GdkDisplay *display,
GdkTexture *texture);
+void gdk_broadway_display_flush_in_idle (GdkDisplay *display);
+
void gdk_broadway_surface_set_nodes (GdkSurface *surface,
GArray *nodes,
GPtrArray *node_textures);
gdk_surface_impl_broadway,
GDK_TYPE_SURFACE_IMPL)
-static GdkDisplay *
-find_broadway_display (void)
-{
- GdkDisplay *display;
- GSList *list, *l;
-
- display = NULL;
-
- list = gdk_display_manager_list_displays (gdk_display_manager_get ());
- for (l = list; l; l = l->next)
- {
- if (GDK_IS_BROADWAY_DISPLAY (l->data))
- {
- display = l->data;
- break;
- }
- }
- g_slist_free (list);
-
- return display;
-}
-
-static guint flush_id = 0;
-
-static gboolean
-flush_idle (gpointer data)
-{
- flush_id = 0;
-
- gdk_display_flush (find_broadway_display ());
-
- return FALSE;
-}
/* We need to flush in an idle rather than AFTER_PAINT, as the clock
is frozen during e.g. surface resizes so the paint will not happen
static void
queue_flush (GdkSurface *surface)
{
- if (flush_id == 0)
- {
- flush_id = g_idle_add (flush_idle, NULL);
- g_source_set_name_by_id (flush_id, "[gtk] flush_idle");
- }
+ gdk_broadway_display_flush_in_idle (gdk_surface_get_display (surface));
}
static void